/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.geradormvc.visao.ouvinte;

import br.com.geradormvc.excessao.GeradorMVCException;
import br.com.geradormvc.modelo.dominio.controle.ControlePrincipal;
import br.com.geradormvc.visao.gui.GUIPrincipal;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

/**
 *
 * @author douglas
 */
public class OuvinteDeGUIPrincipal {

    GUIPrincipal guiPrincipal;

    public OuvinteDeGUIPrincipal(GUIPrincipal gui) {
        this.guiPrincipal = gui;
        this.guiPrincipal.btnTestarConexaoAddActionListener(new OuvintePesquisarDatabase());
        this.guiPrincipal.btnLimparDadosAddActionListener(new OuvinteLimparDados());
        this.guiPrincipal.btnConectarDatabaseAddActionListener(new OuvintePesquisarTabela());
        this.guiPrincipal.btnListarColunasTabelaAddActionListener(new OuvintePesquisarColunasTabela());

    }

    class OuvintePesquisarDatabase implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            try {
                guiPrincipal.setParametrosDB(guiPrincipal.getDadosConexao());
                ControlePrincipal controle = new ControlePrincipal();
                List databases = controle.pesquisarDatabase();

                guiPrincipal.exibirDatabases(databases);
            } catch (GeradorMVCException ex) {
                guiPrincipal.exibirMensagem(ex.getMessage(), "Mensagem de erro", true);
            }
        }
    }

    class OuvintePesquisarTabela implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            try {
                guiPrincipal.setParametrosDB(guiPrincipal.getDadosConexao());
                ControlePrincipal controle = new ControlePrincipal();
                List tabelas = controle.pesquisarTabelas();

                guiPrincipal.exibirTabelas(tabelas);
            } catch (GeradorMVCException ex) {
                guiPrincipal.exibirMensagem(ex.getMessage(), ".:Mensagem de erro:.", true);
            } finally {
                guiPrincipal.exibirMensagem("Conexão realizada com sucesso!!!", ".:Mensagem de Aviso:.", false);
            }
        }
    }
    //Só fiz esta classe para praticar.. hehe

    class OuvinteLimparDados implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            guiPrincipal.limpaDadosConexao();
        }
    }

    class OuvintePesquisarColunasTabela implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            try {
                //guiPrincipal.setParametrosDB(guiPrincipal.getDadosConexao());
                ControlePrincipal controle = new ControlePrincipal();
                String objName = guiPrincipal.getTabela();
                String objKind = "r";
                List colunasTalela = controle.pesquisarColunasTabela(objName, objKind);

                guiPrincipal.exibirColunasTabela(colunasTalela);
            } catch (GeradorMVCException ex) {
                guiPrincipal.exibirMensagem(ex.getMessage(), "Mensagem de erro", true);
            }
        }
    }

}
